home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / swtools / trubasic / rolldemos / demos / interact / tbedit.tru < prev    next >
Text File  |  1994-08-02  |  4KB  |  142 lines

  1. ! ****************************************************************************
  2. ! file:  tbedit
  3. !
  4. ! function: adjusts the rgb color mix of a True BASIC color using
  5. !       the mouse to adjust slider bars that visually represent the mix.
  6. !      (similar to cedit on the Silicon Graphics)
  7. !
  8. ! NOTE: this program is written using singlebuffer mode.
  9. ! to avoid the slight flicker when the image is redrawn, use doublebuffer mode.
  10. !
  11. ! ****************************************************************************
  12.  
  13. ! draw the image with slider bars, rgb values, etc.
  14. ! respond to mouse events by adjusting the slider bar, the intensity, and
  15. ! resdisplaying the actual color.  handle redraw events.
  16.  
  17. ! the window scale is the default 0 to 1
  18. when error in
  19.    call tw_wset_title(0,"tbedit")        ! window title
  20.    call winfo("set resize","1")        ! window to resized
  21.    set text justify "center","base"    ! center text
  22.    option nolet                ! make the LET optional on assignments
  23.  
  24.    clear
  25.    set mode "dynamic"            ! use read-write colors for X
  26.    fore$="black"
  27.    back$="white"
  28.    set back back$
  29.    clear
  30.  
  31.    zero,yr,yg,yb=.17            ! y value for slider bar boxes
  32.  
  33.    clr=21                ! color we are adjusting
  34.    set color mix (clr) 0,0,0
  35.  
  36.    rstart=.1                ! x values for slider boxes
  37.    rend=.2
  38.    gstart=.3
  39.    gend=.4
  40.    bstart=.5
  41.    bend=.6
  42.  
  43.    bot=.15                ! top and bottom of slider boxes
  44.    top=.95
  45.    slidetop=.92
  46.    slidebot=.17
  47.    down=1
  48.    
  49.    call draw_image            ! draw the image
  50.    do
  51.       if key input then stop
  52.       get mouse x,y,state
  53.       if refresh(1)=1 then call draw_image    ! handle refresh events
  54.       if state=down then            ! handle mouse events
  55.          if y<slidebot then y=slidebot
  56.          if y>slidetop then y=slidetop
  57.          if y<>yr and x>rstart and x<rend then    ! adjust red value
  58.            call clear_red
  59.            yr=y
  60.        r=(y-slidebot)/(slidetop-slidebot)
  61.            set color mix (clr) r,g,b
  62.        call update_red
  63.          end if
  64.          if y<>yg and x>gstart and x<gend then    ! adjust green value
  65.            call clear_green
  66.            yg=y
  67.        g=(y-slidebot)/(slidetop-slidebot)
  68.            set color mix (clr) r,g,b
  69.        call update_green
  70.          end if
  71.          if y<>yb and x>bstart and x<bend then    ! adjust blue value
  72.            call clear_blue 
  73.            yb=y
  74.        b=(y-slidebot)/(slidetop-slidebot)
  75.            set color mix (clr) r,g,b
  76.        call update_blue 
  77.          end if
  78.       end if
  79.    loop
  80. use
  81.    ! an error occurred, print message and stop
  82.    set mode "text"
  83.    print extext$,extype,exline$
  84.    stop
  85. end when
  86.  
  87. ! update the box that displays the current color
  88. sub update_box
  89.   set color clr
  90.   box area .72,.92,.17,.92
  91.   set color fore$
  92.   box lines .72,.92,.17,.92
  93. end sub
  94.  
  95. ! draw the image in the window (slider bars, rgb values, etc)
  96. sub draw_image
  97.   clear
  98.   call update_box
  99.   call update_red
  100.   call update_green
  101.   call update_blue 
  102.   box lines rstart,rend,bot,top
  103.   box lines gstart,gend,bot,top
  104.   box lines bstart,bend,bot,top
  105.   plot text, at .82,.05: str$(clr)
  106. end sub
  107. sub clear_blue 
  108.         set color back$
  109.         box area bstart+.02,bend-.02,yb,yb+.02
  110.         box area .4,.65,.05,.12
  111. end sub
  112. sub clear_green
  113.         set color back$
  114.         box area gstart+.02,gend-.02,yg,yg+.02
  115.         box area .2,.45,.05,.12
  116. end sub
  117. sub clear_red
  118.         set color back$
  119.         box area rstart+.02,rend-.02,yr,yr+.02
  120.         box area 0,.25,.05,.12
  121. end sub
  122. sub update_blue 
  123.   set color "blue"
  124.   box area bstart+.02,bend-.02,yb,yb+.02
  125.   set color fore$
  126.   plot text, at .54,.05: str$(int(b*255))
  127. end sub
  128. sub update_green
  129.   set color "green"
  130.   box area gstart+.02,gend-.02,yg,yg+.02
  131.   set color fore$
  132.   plot text, at .34,.05: str$(int(g*255))
  133. end sub
  134. sub update_red
  135.   set color "red"
  136.   box area rstart+.02,rend-.02,yr,yr+.02
  137.   set color fore$
  138.   plot text, at .15,.05: str$(int(r*255))
  139. end sub
  140. end
  141.  
  142.